using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using Infragistics.Win;
using Infragistics.Win.UltraWinGrid;
using System.Windows.Forms;
using System.IO;
using Gratamira.CapaNegocio;

namespace Gratamira.Presentacion
{
    public partial class frmConExistencia : Form
    {
        DataSet dsGridDatos = new DataSet();
        Producto mProducto = new Producto();
        public frmConExistencia()
        {
            InitializeComponent();
            llenarListas();
            grdValores.DataSource = dsGridDatos;
            dsGridDatos.EnforceConstraints = false;
            //Instanciar la primera busqueda
            mProducto.consultarExistencias(dsGridDatos, txtValor.Text, ddlFiltrar.SelectedIndex);
            configurarGrid();
        }

        private void configurarGrid()
        {
            UltraGridBand banda0 = grdValores.DisplayLayout.Bands["Existencias"];
            banda0.Columns["ProductoID"].Width = 80;
            banda0.Columns["ProductoID"].Header.Caption = "Codigo";
            banda0.Columns["Nombre Producto"].Width = 250;
            
            banda0.Columns["UnidadManejoID"].Width = 85;
            banda0.Columns["UnidadManejoID"].Header.Caption = "Und Manejo";
            //Existencias Unidad de Manejo
            banda0.Columns["ExiUniMan"].Width = 70;
            banda0.Columns["ExiUniMan"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DoublePositive;
            banda0.Columns["ExiUniMan"].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
            banda0.Columns["ExiUniMan"].Format = "#,###,##0.00";
            //banda0.Columns["ExiUniMan"].NullText = "0.00";
            banda0.Columns["ExiUniMan"].Header.Caption = "Existencia";
            //Reservado
            banda0.Columns["Reservado"].Width = 80;
            banda0.Columns["Reservado"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DoublePositive;
            banda0.Columns["Reservado"].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
            //banda0.Columns["Reservado"].NullText = "0.00";
            banda0.Columns["Reservado"].Format = "#,###,##0.00";
            //Disponible
            banda0.Columns["Disponible"].Width = 80;
            banda0.Columns["Disponible"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DoublePositive;
            banda0.Columns["Disponible"].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
            //banda0.Columns["Disponible"].NullText = "0.00";
            banda0.Columns["Disponible"].Format = "#,###,##0.00";
            //Existencias Unidad de Compra
            banda0.Columns["ExiUniCom"].Width = 85;
            banda0.Columns["ExiUniCom"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DoublePositive;
            banda0.Columns["ExiUniCom"].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
            banda0.Columns["ExiUniCom"].Format = "#,###,##0.00";
            banda0.Columns["UnidadCompraID"].Width = 80;
            banda0.Columns["UnidadCompraID"].Header.Caption = "Und Compra";
            //Estado
            banda0.Columns["Estado"].Width = 60;

            //Configurar banda Saldo por Bodega
            UltraGridBand banda1 = grdValores.DisplayLayout.Bands["ExiBodega"];
            banda1.Override.HeaderAppearance.BackColor = Color.LightCoral;
            banda1.Columns["Existencia"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DoublePositive;
            banda1.Columns["Existencia"].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
            banda1.Columns["Existencia"].Format = "#,###,##0.00";
            //Ocultar Codigo del producto
            banda1.Columns["ProductoID"].Hidden = true;

            //Configurar banda Detalle de Reservas
            UltraGridBand banda2 = grdValores.DisplayLayout.Bands["ExiReserva"];
            banda2.Override.HeaderAppearance.BackColor = Color.LightBlue;
            banda2.Columns["Reservado"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DoublePositive;
            banda2.Columns["Reservado"].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
            banda2.Columns["Reservado"].Format = "#,###,##0.00";
            //Ocultar Codigo del producto
            banda2.Columns["ProductoID"].Hidden = true;

        }
        private void llenarListas()
        {
            ddlFiltrar.Items.Add("Nombre");
            ddlFiltrar.Items.Add("Codigo Producto");
            ddlFiltrar.SelectedIndex = 0;
        }

        private void cmdBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtValor.ToString().Length > 0)
                {
                    //Borrar todos los datos para traer los nuevos
                    dsGridDatos.Clear();
                    mProducto.consultarExistencias(dsGridDatos, txtValor.Text, ddlFiltrar.SelectedIndex);
                    if (grdValores.Rows.Count == 0)
                    {
                        MessageBox.Show("No hay resitros con el valor indicado.", "Consulta Existencias", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        txtValor.Focus();
                    }
                    else
                    {
                        grdValores.Focus();
                    }
                }
                else
                {
                    MessageBox.Show("Debe de indicar un valor de busqueda", "Consulta Existencias", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocurrio un error ejecutando la busqueda: " + ex.Message, "Consulta Existencias", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void cmdExcel_Click(object sender, EventArgs e)
        {
            //Construir nombre de archivo
            string nombreArchivo =  "C:/Softpro/Documentos/Existencias a " + DateTime.Now.ToString("yyyyMMdd_HH_mm") + ".XLS";
            string directorio = "C:/Softpro/Documentos";
            //Verifica si existe el directorio. Si no, se crea.
            if (!Directory.Exists(directorio))
            {
                Directory.CreateDirectory(directorio);
            }
            //FileStream f = new FileStream(nombreArchivo, FileMode.Create);
            gexObjeto.Export(grdValores, nombreArchivo);
            System.Diagnostics.Process.Start(nombreArchivo);
        }
    }
}